LINQ to Everything
Bart De Smetは、.NET FrameworkチームでWindows Presentation Foundation(WPF)の開発に長年携わった後、2010年にクラウドプログラマビリティチームに参加しました。2007年にマイクロソフトに入社する前は、様々なデータソース(主にCAMLクエリによるSharePoint、LDAPクエリによるActive Directory)向けのLINQプロバイダの構築に注力していました。2010年にErik Meijerのチームに加わると、彼の最初の仕事は、「LINQプロバイダの民主化」のためのツールキットの構築に注力することでした。既存の様々なLINQプロバイダは、より洗練されたコンパイラバックエンドアプローチを用いて書き直され、汎用的なオプティマイザや.NET式ツリーの書き換え、ターゲット言語の適切なASTモデル、より良いコードを生成するためのプラグイン可能なドメイン固有の最適化などが導入されました。
Bart De Smet joined the Cloud Programmability Team in 2010 after spending a number of years in the .NET Framework team, working on Windows Presentation Foundation (WPF). Prior to joining Microsoft in 2007, Bart focused heavily on building LINQ providers for a variety of data sources (most notably SharePoint through CAML queries, and Active Directory through LDAP queries). Upon joining Erik Meijer’s team in 2010, his first task was to focus on building a toolkit for “democratizing LINQ providers”. Various existing LINQ providers were rewritten using a more discplined compiler back-end approach, introducing general-purpose optimizers and rewrites for .NET expression trees, proper AST models for target languages, and pluggable domain-specific optimizations to produce better code.
特筆すべき論文として、「Thirteen New Players in the Team: A Ferry-based LINQ to SQL Provider」は、初期のLINQ to SQLに比べて、リレーショナルデータベース用のLINQプロバイダを構築するためのアプローチが大きく異なることを示しています。私たちの「LINQ to Everything」のビジョンと実行は、この哲学に似ていました。
One paper worth pointing out is Thirteen New Players in the Team: A Ferry-based LINQ to SQL Provider which shows vastly different approaches to build LINQ providers for relational databases compared to the initial LINQ to SQL offering. Our “LINQ to Everything” vision and execution was akin to this philosophy.
この取り組みの目的の1つは、データアクセスとクエリの技術を構築するための強固な基盤としてLINQをSQL Serverの組織内で売り込むことでした。その結果、LINQ式をSQL Server製品により深く浸透させるためのプロトタイピングや、SQL Serverに同梱されているETL(Extract-Transform-Load)製品であるSQL Server Integration Services(SSIS)の言語としてLINQを採用するなど、さまざまなプロジェクトが生まれました。これらのプロジェクトは、DryadLINQにインスパイアされた初期のビッグデータ処理クラウド製品の将来的な方向性として、技術リーダーシップチームの関心を集めました。これらの取り組みについては後ほどご紹介します。
One of the goals of this effort was to sell LINQ as a solid foundation to build data access and querying technologies in the larger SQL Server organization. Various projects were spawn from this, including prototyping efforts to push LINQ expressions deeper into the SQL Server product, and using LINQ to become the language underneath SQL Server Integration Services (SSIS), the Extract-Transform-Load (ETL) product that ships with SQL Server. These projects caught some interest from the technical leadership team as possible future directions for initial big data processing cloud offerings, inspired by DryadLINQ. We’ll return to these efforts later.
Reactive Extensions (Rx)への関心が高まったため、「LINQ to Everything」への取り組みは、散発的に復活する20%の時間のプロジェクトとなりました。この取り組みの重要な成果の1つが、Rxにおける式木サポートの導入であり、これについてはこのドキュメントでさらに詳しく説明します。
Due to the increased focus on Reactive Extensions (Rx), the work on “LINQ to Everything” became a 20% time project with sporadic resurgences. One of the tangential results of this effort was the introduction of expression tree support in Rx, which will be discussed further on in this document.
"LINQ to Everything" の取り組みにより、膨大な数のライブラリやツールが作成されましたが、これらのツールは今日でも、Reaqtorのさまざまなコンポーネントで使用される必須アセンブリの1つであるNuqleon.Linq.CompilerServicesに受け継がれています。2013年にBartがオンラインサービス部門に移行した際には、これらのツールは後述する分散型グラフデータベースの作成にも活用されました。
The “LINQ to Everything” effort led to the creation of a plethora of libraries and tools, which live on to this day in one of the essential assemblies, Nuqleon.Linq.CompilerServices, used by various Reaqtor components. Upon Bart’s transition to the Online Services Division in 2013, these tools were also put to use in the creation of a distributed graph database, which will be mentioned later on.